<?php defined('BASEPATH') OR exit('No direct script access allowed');

if ( ! class_exists('Controller')) {
	class Controller extends CI_Controller {}
}

class Basket extends Controller {
		public function __construct() {
		parent::__construct();
		if (!$this->ion_auth->logged_in() && $this->config->item('catalog_show_needauth')) redirect('/');
		}
	function index() {
		$this->layout->view('basket/index', $data);
	}

	function order($id) {
		if (!is_numeric($id)) {
			$this->session->set_flashdata('msg', 'Ошибка проведения заказа!<br />Не верные данные!');
			redirect('/');
		}
		$order = $this->db->select()->from('orders')->where('order_id', $id)->get()->row_array();
		if (sizeof($order) <= 0) {
			$this->session->set_flashdata('msg', 'Ошибка проведения заказа!<br />Нет данных!');
			redirect('/');
		}
		if ($order['order_status'] != 0) {
//			$this->session->set_flashdata('msg', 'Ошибка проведения заказа!<br />Нет данных!');
			redirect('/basket/doorder/'.$id.'/');
		}
		if ($this->ion_auth->logged_in() && $order['order_user'] != $this->ion_auth->get_user()->id) {
			$this->session->set_flashdata('msg', 'Ошибка проведения заказа!<br />Hack attempt!');
			redirect('/');
		}
		if ($this->ion_auth->logged_in()) {
			$user = $this->ion_auth->get_user();
			$have_data['name_1'] = $user->name_1;
			$have_data['name_2'] = $user->name_2;
			$have_data['name_3'] = $user->name_3;
			$have_data['phone'] = $user->phone;
			$have_data['email'] = $user->email;
			$have_data['address_1'] = $user->address_1;
			$have_data['address_2'] = $user->address_2;
			$have_data['address_3'] = $user->address_3;
			$have_data['urname'] = $user->urname;
			$have_data['inn'] = $user->inn;
			$have_data['kpp'] = $user->kpp;
		}


		if ($_SERVER["REQUEST_METHOD"] == "POST" && !$this->ion_auth->logged_in()) {
			$check_u = $this->db->select()->from('users')->where('email', $this->input->post('email'))->get()->row_array();
			if (sizeof($check_u) > 0) $add_req = false; else $add_req = true;
		} else {
			$add_req = true;
		}

		$form = new jQuickForm('simple_order_try_reg');
		$form->setLabel('Оформление заказа');
		$fieldset = $form->insertFieldset();
		$gr = $fieldset->insertGroup();

		if (!$this->ion_auth->logged_in()) {
			$gr->insertStatic('<p>Вы являетесь не авторизованным пользователем. Если Вы регистрировались на нашем сайте раньше, просто введите свои регистрационные данные в форме ниже (электронная почта и пароль), и данные будут заполнены автоматически.</p>');
			$gr->insertStatic('<p>Если Вы ещё ни разу ничего у нас не покупали, вы можете заполнить форму полностью и мы автоматически заведем Вам учетную запись.</p>');

			$email = $gr->insertInputText('email')->setLabel('Электронная почта');
			$email->addRule('callback', 'Не верный формат поля', array('callback' => 'validate_email'), HTML_QuickForm2_Rule::CLIENT);
			$email->addRule('callback', 'Не верный формат поля', array('callback' => 'validate_email'), HTML_QuickForm2_Rule::SERVER);
			$email->addRuleRequired();

			$password = $gr->insertInputPassword('password')->setLabel('Пароль');
			$password->addRuleRequired();
		} else {
			$gr->insertStatic('<p>Вы являетесь авторизованным пользователем. Вы авторизованы под учетной записью <b>'.$user->email.'</b>. Для того чтобы оформить заказ, проверьте введенные данные'.($order['order_payment'] == "prepaid"?", уточните способ оплаты":"").' и нажмите "оформить заказ".</p>');
		}
		$fieldset = $form->insertFieldset();
		if (!$this->ion_auth->logged_in()) $fieldset->addClass('fullregform');

		////////
		$gr = $fieldset->insertGroup()->addClass('col col2');
		$field = $gr->insertInputText('name_1')->setLabel('Фамилия');
		if ($add_req) $field->addRuleRequired();
		$field = $gr->insertInputText('name_2')->setLabel('Имя');
		if ($add_req) $field->addRuleRequired();
		$field = $gr->insertInputText('name_3')->setLabel('Отчество');
		if ($add_req) $field->addRuleRequired();
		$phone = $gr->insertInputText('phone')->setLabel('Телефон');
		$phone->addRule('callback', 'Не верный формат поля', array('callback' => 'validate_phone'), HTML_QuickForm2_Rule::CLIENT);
		if ($add_req) $phone->addRule('callback', 'Не верный формат поля', array('callback' => 'validate_phone'), HTML_QuickForm2_Rule::SERVER);
		if ($add_req) $phone->addRuleRequired();
		////////

		////////
		$field = $fieldset->insertInputText('address_1')->setLabel('Адрес доставки')->setComment('Если Вы хотите забрать товар в нашем магазине - укажите его адрес');
		if ($add_req) $field->addRuleRequired();

		$fieldset = $form->insertFieldset();
		if (!$this->ion_auth->logged_in()) $fieldset->addClass('fullregform');


		$gr = $fieldset->insertGroup()->addClass();
		$field = $gr->insertInputText('urname')->setLabel('Юридическое название организации')->setComment('Только для юридических лиц');
		$gr = $fieldset->insertGroup()->addClass('col col2');
		$field = $gr->insertInputText('address_2')->setLabel('Юридический адрес');
		$field = $gr->insertInputText('address_3')->setLabel('Фактический адрес');
		$field = $gr->insertInputText('inn')->setLabel('ИНН');
		$field = $gr->insertInputText('kpp')->setLabel('КПП');


		$fieldset = $form->insertFieldset();
		$fieldset->insertTextArea('order_comment')->setLabel('Комментарий к заказу');

		if ($_SERVER["REQUEST_METHOD"] == "POST") {
			if ($form->validate()) {
				if (!$this->ion_auth->logged_in()) {
					if (sizeof($check_u) > 0) {
						if ($this->ion_auth_model->login($this->input->post('email'), $this->input->post('password'), true)) { // если успешный логин
							// дальше оформление
							$update_order['order_user'] = $this->ion_auth->get_user()->id;
							$this->db->set($update_order)->where('order_id', $id)->update('orders');
							redirect('basket/order/'.$id.'/'); // возвращаем в заказ, чтобы проверил свои данные
						} else {
							// ошибка авторизации
							$this->session->set_flashdata('msg', '<p>Ошибка авторизации!</p><p>Проверьте введённые данные.</p><p style="text-align: center;"><a href="/auth/forgot_password/" target="_blank">Напомнить пароль?</a></p>');
							redirect('basket/order/'.$id.'/');
						}
					} else {
						// тут рега
						$p_data = $this->input->post();
						$additional_data['first_name'] = $p_data['name_1']." ".$p_data['name_2']." ".$p_data['name_3'];
						$additional_data['name_1'] = $p_data['name_1'];
						$additional_data['name_2'] = $p_data['name_2'];
						$additional_data['name_3'] = $p_data['name_3'];
						$additional_data['phone'] = $p_data['phone'];
						$additional_data['address_1'] = $p_data['address_1'];
						$additional_data['address_2'] = $p_data['address_2'];
						$additional_data['address_3'] = $p_data['address_3'];
						$additional_data['urname'] = $p_data['urname'];
						$additional_data['inn'] = $p_data['inn'];
						$additional_data['kpp'] = $p_data['kpp'];

						$result = $this->ion_auth->register($username, $p_data['password'], $p_data['email'], $additional_data);
						if (is_int($result)) { // успешная регистрация
							$this->session->set_flashdata('msg', 'Регистрация прошла успешно!');

							$update_order['order_user'] = $result;
							$update_order['order_prepaid_payment'] = $this->input->post('prepaid_payment');
							$update_order['order_comment'] = $this->input->post('order_comment');
							$update_order['order_email'] = $p_data['email'];
							$update_order['order_status'] = 1;

							$this->db->set($update_order)->where('order_id', $id)->update('orders');
							$this->ion_auth_model->login($p_data['email'], $p_data['password'], true);
							redirect('basket/doorder/'.$id.'/');
						} else { // is_int result - если не успешная регистрация
							$this->session->set_flashdata('msg', '<p>Ошибка регистрации!</p><p>Проверьте введённые данные, если Вы уверены, что все хорошо - свяжитесь с нами.</p>');
							redirect('basket/order/'.$id.'/');
						} // is_int result
					} // sizeof(check_u) проверка на существование мыла
				} else { // если человек авторизован
					// обновляем мета данные по юзеру
					$p_data = $this->input->post();
					$additional_data['name_1'] = $p_data['name_1'];
					$additional_data['name_2'] = $p_data['name_2'];
					$additional_data['name_3'] = $p_data['name_3'];
					$additional_data['first_name'] = $p_data['name_1']." ".$p_data['name_2']." ".$p_data['name_3'];

					$additional_data['phone'] = $p_data['phone'];
					$additional_data['address_1'] = $p_data['address_1'];
					$additional_data['address_2'] = $p_data['address_2'];
					$additional_data['address_3'] = $p_data['address_3'];
					$additional_data['urname'] = $p_data['urname'];
					$additional_data['inn'] = $p_data['inn'];
					$additional_data['kpp'] = $p_data['kpp'];
					$this->db->update('meta', $additional_data, array('user_id' => $this->ion_auth->get_user()->id));

					$update_order['order_user'] = $this->ion_auth->get_user()->id;
					$update_order['order_prepaid_payment'] = $this->input->post('prepaid_payment');
					$update_order['order_comment'] = $this->input->post('order_comment');
					$update_order['order_email'] = $this->ion_auth->get_user()->email;
					$update_order['order_status'] = 1;
					$this->db->set($update_order)->where('order_id', $id)->update('orders');

					redirect('basket/doorder/'.$id.'/');
				} // проверка авторизации
			}  // validate form
		} // request method


		$fieldset->insertInputSubmit("Оформить заказ");
		$form->insertStatic($this->config_model->get('basket_order_text'));

		$form->addDataSource(new HTML_QuickForm2_DataSource_Array($have_data));
		$data['form'] = $form."";
		$data['js'] = jQuickForm::js()->getJsAll();

		$basket_data['basket'] = array('basket' => json_decode($order['order_data'], true), 'count' => $count, 'sum' => $order['order_sum'], 'sum2' => $order['order_sum2']);
		$basket_data['return'] = true;
		$basket_data['payment_selected'] = $order['order_payment'];
		$data['basket_list'] = $this->load->view('basket/listing', $basket_data, true);
		$data['right_col_class'] = "no-right-col";
		$this->layout->view('basket/order', $data);
	}
	function doorder($id) {

		if (!is_numeric($id)) {
			$this->session->set_flashdata('msg', 'Ошибка проведения заказа!<br />Не верные данные!');
			redirect('/');
		}
		$order = $this->db->select()->from('orders')->where('order_id', $id)->get()->row_array();
		if (sizeof($order) <= 0) {
			$this->session->set_flashdata('msg', 'Ошибка проведения заказа!<br />Нет данных!');
			redirect('/');
		}
		if ($order['order_status'] != 1) {
			$this->session->set_flashdata('msg', 'Ошибка проведения заказа!<br />Изменен статус заказа!');
			redirect('/');
		}
		if ($this->ion_auth->logged_in() && $order['order_user'] != $this->ion_auth->get_user()->id) {
			$this->session->set_flashdata('msg', 'Ошибка проведения заказа!<br />Hack attempt!');
			redirect('/');
		}

		$userdata = json_encode($this->ion_auth->get_user());
		$this->db->set('order_status', 1)->set('order_date', time())->set('order_userdata', $userdata)->where('order_id', $id)->update('orders');
		$order = $this->db->select()->from('orders')->where('order_id', $id)->get()->row_array();


//		if ($order['order_payment'] == "prepaid") {
//			switch ($order['order_prepaid_payment']) {
//				case "qiwi":
//					$userdata = json_decode($order['order_userdata'], true);
//					$phone = mb_substr(preg_replace('/[^0-9]/', '', $userdata['phone']), -10);
//					$url = "http://w.qiwi.ru/setInetBill_utf.do";
//					$post = "?from=15698";
//					$post .= "&to=" . $phone;
//					$post .= "&summ=" . number_format($order['order_price2'], 2, ".", "");
//					$post .= "&com=" . urlencode("TelZaka, оплата заказа " . $id);
//					$post .= "&lifetime=24";
//					$post .= "&check_agt=false";
//					$post .= "&txn_id=" . $id;
//					redirect($url.$post);
//				break;
//				case "sber":
//				case "alfa":
//					$order_data['order'] = $order;
//					$order_data['userdata'] = json_decode($order['order_userdata'], true);
//					ob_start(); // fix headers
//					$this->load->library('Pdf_creater'); // грузим либу
//					$link = $order['order_id']."_".$this->session->userdata('session_id'); // формируем ссылку на пдф
//					$print_layout['content_for_layout'] = $this->load->view('basket/sber_form', $order_data, true); // получаем html квитанции
//					$pdf_html = $this->load->view('print', $print_layout, true); // получаем полный шаблон для принта
//					$this->pdf_creater->pdf_create($pdf_html, $link); // суём в пдфку
//					ob_clean(); // fix headers
//
//					$this->load->library('email');
//					$msg = $this->load->view('basket/to_user_about_order', $order_data, true);
//					$this->email->from($this->config->item('from_email'), $this->config->item('from_name'));
//					$this->email->to($order['order_email']);
//					$this->email->subject('Оформление заказа на сайте ' . $this->config->item('company_name') . '. Заказ №' . $order['order_id']);
//					$this->email->message($msg);
//					$this->email->attach($_SERVER['DOCUMENT_ROOT']."/pdf/".$link.".pdf");
//					$this->email->send();
//					$this->email->clear();
//
//
//					$msg = $this->load->view('basket/to_admin_about_order', $order_data, true);
//					$this->email->from($this->config->item('from_email'), $this->config->item('from_name'));
//					$this->email->to($this->config->item('admin_email'));
//					$this->email->subject('Новый заказ на сайте '.$this->config->item('company_name').' №'.$order['order_id']);
//					$this->email->message($msg);
//					$this->email->attach($_SERVER['DOCUMENT_ROOT']."/pdf/".$link.".pdf");
//					$this->email->send();
//
//					// возможно тут будет слаться смс
//
//					// выводим резалт
//					$order_data['right_col_class'] = "no-right-col";
//					$this->layout->view('basket/success_prepaid', $order_data);
//				break;
//			}
//		} else {
			$order_data['order'] = $order; // формируем данные для шаблона
			$order_data['userdata'] = json_decode($order['order_userdata'], true);

			$this->load->library('email');
			$msg = $this->load->view('basket/to_admin_about_order', $order_data, true);
			$this->email->from($this->config->item('from_email'), $this->config->item('from_name'));
			$this->email->to($this->config->item('admin_email'));
			$this->email->subject('Новый заказ на сайте ' . $this->config->item('company_name') . ' №' . $order['order_id']);
			$this->email->message($msg);
			$this->email->send();
			$this->email->clear();

			$msg = $this->load->view('basket/to_user_about_order', $order_data, true);
			$this->email->from($this->config->item('from_email'), $this->config->item('from_name'));
			$this->email->to($order['order_email']);
			$this->email->subject('Оформление заказа на сайте ' . $this->config->item('company_name') . '. Заказ №' . $order['order_id']);
			$this->email->message($msg);
			$this->email->send();

			// возможно тут будет слаться смс
			// выводим резалт
//			$order_data['right_col_class'] = "no-right-col";
			$this->layout->view('basket/success_postpaid', $order_data);
//		}
	}

	function listing($return = false) {
		$data['basket'] = $this->basket_model->get_basket_list(true);
		$data['return'] = $return;

		$form = new jQuickForm('basket_order_form');

		$gr = $form->insertGroup()->addClass('submit-button');
		$gr->insertInputSubmit("Оформить заказ");


		if ($_SERVER['REQUEST_METHOD'] == "POST") {
			$p_data = $this->input->post();
			$basket = $this->basket_model->get_basket_list(true);
				if ($basket['count'] > 0 && $basket['sum'] > 0) {
					$order['order_id'] = 0;
					$order['order_user'] = ($this->ion_auth->logged_in()?$this->ion_auth->get_user()->id:0);
					$order['order_sum'] = $basket['sum'];
					$order['order_date'] = time();
					$order['order_data'] = json_encode($basket['basket']);
					$order['order_status'] = 0; // в процессе
					$order['order_payment'] = $p_data['payment'];
					$order['order_email'] = ($this->ion_auth->logged_in()?$this->ion_auth->get_user()->email:"");
					$this->db->insert('orders', $order);
					$mail_data['o'] = $o = $this->db->insert_id();
					$this->basket_model->erase_basket();
					redirect('basket/order/'.$o.'/');
					exit();
				}
			}

		$data['form'] = $form."";
		$data['js'] = jQuickForm::js()->getJsAll();
		$data['text'] = $this->config_model->get('basket_listing_text');
		$out['text'] = $this->load->view('basket/listing', $data, true);
		if ($return) return json_encode($out); else
		echo json_encode($out);
	}
	function add($id) {
		if ($_SERVER['REQUEST_METHOD'] == "POST") {
			$p_data = $this->input->post();
			if (!is_numeric($id)) die('fck!'); // если не id иди нахуй
			$basket = $this->basket_model->get_basket_list();
			if (key_exists($id, $basket)) {
				$basket[$id]['sum'] = (1 + $basket[$id]['count']) * $basket[$id]['price']; // пересчитываем сумму за 1 товар без предоплаты
				$basket[$id]['count'] += 1; // прибавляем количество
			} else {
				$info = $this->db->select()->from('catalog_items')->where('item_id', $id)->get()->row_array();
				$to_basket['count'] = 1; // количество
				$to_basket['name'] = $info['item_title']; // название товара
				$to_basket['price'] = $info['item_price']; // цена без предоплаты
				$to_basket['sum'] = $to_basket['price'] * 1; // сумма за 1 товар без предоплаты
				$basket[$id] = $to_basket; // id товара пишется в ключ
			}
			$this->basket_model->update_basket($basket);
			echo "ok";
		} else {
			redirect("/catalog/".$id."/");
		}
	}
	function delete($id) {
		if (!is_numeric($id)) die('fck!');
		$basket = $this->basket_model->get_basket_list();
		if (key_exists($id, $basket)) {
			unset($basket[$id]);
		}
		if (sizeof($basket) > 0) {
			$this->basket_model->update_basket($basket);
			redirect('basket');
		} else {
			$this->basket_model->erase_basket();
			redirect('/');
		}
	}
	function erase() {
		$this->basket_model->erase_basket();
		redirect('/');
	}
	function block() {
		echo $this->basket_model->show_block();
	}
	function blocksmall() {
		echo $this->basket_model->small_basket_block(false);
	}
	function updatecount($id, $val) {
			if (!is_numeric($id)) die('fck1!');
			if (!is_numeric($val)) die('fck2!');
			$basket = $this->basket_model->get_basket_list();
			if (key_exists($id, $basket)) {
				$info = $this->db->select()->from('catalog_items')->where('item_id', $id)->get()->row_array();
				$basket[$id]['sum'] = $info['item_price'] * $val;
				$basket[$id]['count'] = $val;
			}
			$this->basket_model->update_basket($basket);
			echo "ok";
	}
	function updatepayment($type) {
			if (!is_numeric($type)) die('fck1!');
			$basket = $this->basket_model->get_basket_list();
			$this->basket_model->update_basket($basket, $type);
			echo "ok";
	}
	function success() {
		$this->basket_model->erase_basket();
		$this->session->set_flashdata('msg', 'Спасибо!<br />Ваш заказ успешно оформлен.<br />В самое ближайшее время наш менеджер свяжется с Вами для уточнения деталей.');
		redirect('/');
		exit();
	}
	function fail() {
		$this->basket_model->erase_basket();
		$this->session->set_flashdata('msg', 'Внимание!<br />Ошибка проведения платежа. Свяжитесь пожалуйста с нашей техподдержкой, для уточнения подробностей.');
		redirect('/');
		exit();
	}
	function xml() {

		$i = file_get_contents('php://input');

		$fp = fopen($_SERVER['DOCUMENT_ROOT'].'/data.txt', 'a+');
		fwrite($fp, time()."\r\n");
		fwrite($fp, $i."\r\n----\r\n");
		fclose($fp);

		$l = array('/<login>(.*)?<\/login>/', '/<password>(.*)?<\/password>/');
		$s = array('/<txn>(.*)?<\/txn>/', '/<status>(.*)?<\/status>/');

		preg_match($l[0], $i, $m1);
		preg_match($l[1], $i, $m2);

		preg_match($s[0], $i, $m3);
		preg_match($s[1], $i, $m4);

		$password = "nf,fhf013";
		$hash = strtoupper(md5($m3[1].strtoupper(md5($password)))); // проверка пароля
		//$hash = "";#подстановка

		if ($hash != $m2[1]){ // если пароль не подходит код 150, ошибка авторизации
		   $resultCode=150;
		} else {
			$order = $this->db->select()->from('orders')->where('order_id', $m3[1])->get()->row_array();
				if (sizeof($order) <= 0) {
					$resultCode=300; // ошибка, такого заказа не существует
				} else {


					// КИВИ БЛЯТЬ НЕ РАБОТАЕТ!!!!!!!!!!!!!!

//					$u = json_decode($order['order_userdata'], true);
//					$this->load->library('email');
//					$msg = "Изменение статуса заказа от QIWI<br />Номер заказа: ".$m3[1]."<br />Статус: ".$this->_result_status($m4[1])."<br /><a href='http://".$_SERVER['HTTP_HOST']."/admin/orders/edit/".$m3[1]."/'>Редактировать заказ</a>";
//					$this->email->from($this->config->item('from_email'), $this->config->item('from_name'));
//					$this->email->to($this->config->item('admin_email'));
//					$this->email->subject('Изменения статуса заказа '.$this->config->item('company_name'));
//					$this->email->message($msg);
//					$this->email->send();
//					$msg = "Изменение статуса заказа<br />Номер заказа: ".$m3[1]."<br />Статус: ".$this->_result_status($m4[1]);
//					$this->email->from($this->config->item('from_email'), $this->config->item('from_name'));
//					$this->email->to($u['email']);
//					$this->email->subject('Изменения статуса заказа '.$this->config->item('company_name'));
//					$this->email->message($msg);
//					$this->email->send();
//
//					$this->db->where('order_id', $m3[1])->update('orders', array('order_qstatus' => $m4[1], 'order_payment_time' => time()));
					$resultCode=0; // обновили заказ, ответили ок!
				}
		}

			$file = fopen($_SERVER['DOCUMENT_ROOT'].'/qiwi/xml', 'r');
			$text = fread($file, filesize($_SERVER['DOCUMENT_ROOT'].'/qiwi/xml'));
			fclose($file);
			$text = str_replace('status', $resultCode, $text);
			header('content-type: text/xml; charset=UTF-8');
			echo $text;
			exit();
	}
	function _result_status($code) {
		switch ($code) {
			case "50": $html = 'Выставлен'; break;
			case "52": $html = 'Проводится'; break;
			case "60": $html = 'Оплачен'; break;
			case "150": $html = 'Отменен (ошибка на терминале)'; break;
			case "151": $html = 'Отменен (ошибка авторизации: недостаточно средств на балансе, отклонен абонентом при оплате с лицевого счета оператора сотовой связи и т.п.).'; break;
			case "160": $html = 'Отменен'; break;
			case "161": $html = 'Отменен (Истекло время)'; break;
		}
		return $html;
	}

	function addtocompare($id=0, $geturl = false) {
		$list = json_decode(get_cookie('compare'), true);
		if (sizeof($list) < 5) {
			if (!in_array($id, $list)) {
				if (sizeof($list) > 0) {
					$check = $this->db->select()->from('catalog_items')->where_in('item_id', $list)->group_by('item_parent')->get()->row_array();
					$item = $this->db->select()->from('catalog_items')->where('item_id', $id)->get()->row_array();
					if ($item['item_parent'] != $check['item_parent']) {
						$this->session->set_flashdata('msg', '<span style="color: red;">Вы не можете сравнивать товары из разных категорий.</span> <br/><a href="/basket/compare/">Посмотреть сравнение</a> <br />или<br /> <a href="/basket/clearcompare/'.$id.'/">очистить список и добавить этот товар</a>');
					} else {
						$list[] = $id;
						$this->session->set_flashdata('msg', '<span style="color: green;">Успешно добавлено к сравнению.</span> <br/><a href="/basket/compare/">Посмотреть сравнение</a>');
					}
				} else {
					$list[] = $id;
					$this->session->set_flashdata('msg', '<span style="color: green;">Успешно добавлено к сравнению.</span> <br/><a href="/basket/compare/">Посмотреть сравнение</a>');
				}
			} else {
				$this->session->set_flashdata('msg', '<span style="color: green;">Товар уже находится в списках сравнения.</span> <br/><a href="/basket/compare/">Посмотреть сравнение</a>');
			}
		} else {
			$this->session->set_flashdata('msg', '<span style="color: red;">Вы можете сравнивать не более 5 товаров.</span> <br/><a href=""><a href="/basket/compare/">Посмотреть сравнение</a> <br />или<br /> <a href="/basket/clearcompare/'.$id.'/">очистить список и добавить этот товар</a>');
		}
		set_cookie('compare', json_encode($list), 604800, ".".$_SERVER['HTTP_HOST'], '/');
		if ($geturl) {
			$geturl = str_replace(".", "/", $geturl);
			if (mb_substr($geturl, -1) != "/") $geturl = $geturl."/";
			redirect(mb_substr($geturl, 1));
		} else {
			redirect('/catalog/'.$id.'/');
		}
	}
	function clearcompare($id = null) {
		$list = array();
		set_cookie('compare', json_encode($list), 604800, ".".$_SERVER['HTTP_HOST'], '/');
		if ($id !== null) redirect('basket/addtocompare/'.$id.'/'); else {$this->session->set_flashdata('msg', 'Список сравнения очищен'); redirect(); }
	}
	function deletecompare($id = null) {
		$list = json_decode(get_cookie('compare'), true);
			if (in_array($id, $list)) {
				foreach ($list as $k => $v) {
					if ($v == $id) unset($list[$k]);
				}
			}
		set_cookie('compare', json_encode($list), 604800, ".".$_SERVER['HTTP_HOST'], '/');
		$this->session->set_flashdata('msg', 'Элемент удалён из списка сравнения');
		redirect('basket/compare');
	}
	function compare() {
		$data['list'] = $list = json_decode(get_cookie('compare'), true);
		if (sizeof($list) > 0) {
			$data['items'] = $items = $this->db->select()->from('catalog_items')->where_in('item_id', $list)->get()->result_array();
			if (sizeof($items) > 0) {
				foreach ($items as $it) {
					$ids[] = $it['item_id'];
				}
				$aimages = $this->db->select()->from('catalog_images')->where_in('photo_item', $ids)->where('photo_main', 1)->get()->result_array();
				foreach ($aimages as $aim) {
					$data['aimages'][$aim['photo_item']] = $aim;
				}
			}
			$data['parent'] = $parent = $this->db->select()->from('catalog_parents')->where('parent_id', $items[0]['item_parent'])->get()->row_array();
			$data['optgr'] = $optgr = $this->db->select()->from('catalog_optgr')->where('optgr_parent', $items[0]['item_parent'])->order_by('optgr_order')->get()->result_array();
			$options = $this->db->select()->from('catalog_options')->where('option_parent', $items[0]['item_parent'])->order_by('option_order')->get()->result_array();
			foreach ($options as $option) $data['options'][$option['option_optgr']][] = array('title' => $option['option_title'], 'id' => $option['option_id']);
			$values = $this->db->select()->from('catalog_values')->where_in('value_item', $list)->get()->result_array();
			foreach ($values as $value) $data['values'][$value['value_option']][$value['value_item']] = $value['value_value'];
			$aimages = $this->db->select()->from('catalog_images')->where_in('photo_item', $list)->where('photo_main', 1)->get()->result_array();
			foreach ($aimages as $aim) {
				$data['aimages'][$aim['photo_item']] = $aim;
			}
		} else {
			$this->session->set_flashdata('msg', 'Список сравнения пуст!');
		}
		$this->layout->view('basket/compare', $data);
	}
}